A light-weight implementation of
Standard ML written by
Sergei Romanenko <
sergei-romanenko@refal.msk.su> of the
Keldysh Institute of Applied Mathematics with assistance
from Peter Sestoft <
sestoft@dina.kvl.dk>, {Royal Veterinary
and Agricultural University}. Moscow
ML is based on {CAML
Light}.
Version: 1.20 implements the
Standard ML Core language.
The sublanguage of Modules implemented by Moscow
ML contains
signatures and non-nested structures, and identifies
structures with source files. It is certainly less expressive
than the full
Standard ML Modules language, but the
type-safe separate compilation facility is simple, useful,
and easy to use. It is the intention to implement the full
Standard ML Modules language (including functors) in due
course.
Compilation of a
signature produces a compiled interface
file, which is used when compiling other signatures and
structures.
Compilation of a structure produces a
bytecode file.
Bytecode files are compact and load fast. For instance, a
3250-line program consisting of 24 structures and 17
signatures compiles to 221 KB of bytecode and 241 KB of
compiled signatures. Starting the
ML system and loading the
24 bytecode files takes 1-2 cpu seconds plus network delays,
less that 5 seconds real time in all.
Release 1.20 permits loading of precompiled bytecode files
into the top-level interactive session. The next release will
be able to create stand-alone executables by linking bytecode
files.
There is a mechanism for adding basis libraries, as in {Caml
Light}. Release 1.20 includes the basis libraries Array,
List, and Vector and the
MS-DOS version includes the
Graphics library from
Caml Light.
In principle, Moscow
ML can be compiled on any
platform
supported by
Caml Light. So far we have tried {Intel
80386}-based
IBM PCs running
MS-DOS,
Microsoft Windows,
OS/2 or
Linux,
DEC MIPS running
Ultrix,
DEC Alpha
running
OSF/1,
Sun-4 running
SunOS,
HP9000 running
HP/UX,
SGI MIPS running
IRIX 5.
Moscow
ML is particularly useful when fast compilation and
modest storage consumption are more important than fast
program execution.
Thanks to the efficient Caml Light run-time system used in
Moscow
ML, it compiles fast and uses little memory, typically
5-10 times less memory than
SML/NJ 0.93 and 2-3 times less
than
Edinburgh ML. Yet the bytecode is only 3 to 10 times
slower than SML/NJ 0.93 compiled native code (fast on {IBM
PCs}, slower on
RISCs).
{
DOS
(ftp://dina.kvl.dk/pub/Peter.Sestoft/mosml/mos12bin.zip)}.
{
Linux
(ftp://dina.kvl.dk:pub/Peter.Sestoft/mosml/linux-mos12bin.tar.gz)}.
{
Source
(ftp://dina.kvl.dk:pub/Peter.Sestoft/mosml/mos12src.tar.gz)}.
Caml Light 0.61 and
gcc are required to recompile Moscow
ML for
Unix or Caml Light 0.61,
djgpp,
Perl, and
Borland C++ version 2.0 (or later) to recompile Moscow
ML
for
DOS.
(1994-12-12)